🧮 Проверка качества пакетов
🎯 Цель раздела
После изучения этого раздела вы:
- освоите инструменты для проверки качества пакетов;
- научитесь применять ROSA Packaging Guidelines;
- узнаете, как тестировать пакеты на стабильность и безопасность;
- будете готовы выпускать пакеты, соответствующие стандартам дистрибутива ROSA.
🧩 Что такое качество пакета
Качество RPM-пакета — это:
- Соблюдение структуры и стандартов SPEC;
- Отсутствие ошибок в установке, обновлении и удалении;
- Корректные зависимости;
- Чистота buildroot и отсутствие мусора;
- Соответствие лицензии и политики безопасности.
🧰 Проверка при помощи rpmlint
rpmlint — основной инструмент статического анализа RPM и SPEC-файлов.
Установка
sudo dnf install rpmlint
Проверка SPEC и пакета
rpmlint SPECS/hello.spec RPMS/x86_64/hello-1.1-2.x86_64.rpm
Пример вывода
hello.x86_64: W: no-manual-page-for-binary hello
hello.spec: W: mixed-use-of-spaces-and-tabs
Коды сообщений
| Тип | Значение |
|---|---|
E: | Ошибка — обязательно исправить |
W: | Предупреждение — желательно устранить |
I: | Информация — можно проигнорировать при обосновании |
⚙️ Распространённые предупреждения и их исправление
| Предупреждение | Описание | Решение |
|---|---|---|
no-manual-page-for-binary | Нет man-страницы | Добавить документацию или README |
non-standard-dir-in-usr | Установка в нестандартный путь | Проверить пути и макросы |
no-%build-section | Пропущена секция сборки | Добавить %build |
macro-in-comment | Макрос в комментарии | Экранировать % → %% |
incoherent-version-in-changelog | Версия changelog не совпадает с Version | Исправить номер версии |
🧾 Политика ROSA Packaging Guidelines
ROSA придерживается собственных Packaging Guidelines, основанных на принципах Fedora, но адаптированных под свою инфраструктуру и Automated Build Farm (ABF).
Основные принципы:
- SPEC должен быть читаемым.
- Сборка должна быть воспроизводимой.
- Пакеты не должны использовать системные пути вручную.
- Все исходники и патчи должны быть в
SOURCES. - Документация должна быть отмечена тегами
%docи%license. - Каждый пакет должен иметь уникальное
Name,Version,Release. - Запрещено скачивать файлы во время сборки (никаких
curl,wget).
📘 Проверка чистоты buildroot
После сборки можно убедиться, что в пакет попадают только нужные файлы:
rpm -qlp RPMS/x86_64/hello-1.1-2.x86_64.rpm
Если видите файлы из /home или /tmp, значит SPEC настроен неправильно — всё должно быть в стандартных путях /usr, /etc, /var.
🧪 Тестирование установки и удаления
Тесты выполняются локально или в mock:
sudo dnf install ./RPMS/x86_64/hello-1.1-2.x86_64.rpm
sudo dnf remove hello
Проверка на чистоту:
rpm -qf /usr/bin/hello
Если после удаления команды возвращают не принадлежит ни одному пакету, — удаление прошло корректно.
🔒 Проверка лицензии и безопасности
Каждый пакет обязан указывать корректную лицензию:
License: MIT
⚠️ Лицензия должна точно соответствовать upstream-проекту. Если исходники без явной лицензии — необходимо связаться с автором или не публиковать пакет в репозитории ROSA.
Для безопасности:
- не используйте бинарные blob-файлы;
- избегайте сторонних скриптов с внешних URL;
- проверяйте патчи на внедрение вредоносных изменений.
🧩 Интеграция с ABF
Перед загрузкой SRPM в Automated Build Farm (ABF) рекомендуется локально убедиться, что:
rpmlintне выдаёт ошибок;- сборка через
mockпроходит успешно; rpmbuild -baсоздаёт идентичный SRPM при повторе.
💡 В ABF каждая сборка фиксируется — reproducible build важен для доверенной экосистемы ROSA.
🧠 Мини-тест для самопроверки
| Вопрос | Ответ |
|---|---|
Что делает rpmlint? | Проверяет пакет и SPEC на ошибки и несоответствия |
Что означает ошибка no-manual-page-for-binary? | У бинарного файла нет документации |
| Где должен лежать исходный код? | В ~/rpmbuild/SOURCES/ |
Что запрещено в секции %build? | Скачивание файлов из сети |
| Что проверяет ROSA Packaging Guidelines? | Стиль, качество и соответствие пакета стандартам дистрибутива |
🧭 Итого
Теперь вы:
- умеете проверять пакеты на ошибки и несоответствия;
- знаете правила ROSA Packaging Guidelines;
- можете гарантировать стабильность и чистоту пакета;
- готовы перейти к следующему этапу — работе с Git и коллаборацией в команде ROSA.
Следующий документ — “Git и работа в ROSA Team”, где вы узнаете о структуре репозиториев, ревью-процессах и взаимодействии с Automated Build Farm.